#include "fft.h"

fft_status fft_q15(int16_t* inputData, uint32_t inputDataLen, int16_t* outputData)
{
    uint8_t ret;
    arm_rfft_instance_q15 S = {0};
    
    S.fftLenReal = inputDataLen;
    S.ifftFlagR = 0;
    S.bitReverseFlagR = 0;
      
    ret = arm_rfft_init_q15(&S, S.fftLenReal, S.ifftFlagR, S.bitReverseFlagR);
    if(ret != fft_ok)
        return fft_error;
    
    arm_rfft_q15(&S,inputData, outputData);
    
    return fft_ok;
}

fft_status _fft_q15(int16_t* inputData, uint32_t inputDataLen, int16_t* outputData)
{
    uint8_t ret;
    arm_rfft_instance_q15 S = {0};
    
    S.fftLenReal = inputDataLen;
    S.ifftFlagR = 1;
    S.bitReverseFlagR = 0;
      
    ret = arm_rfft_init_q15(&S, S.fftLenReal, S.ifftFlagR, S.bitReverseFlagR);
    if(ret != fft_ok)
        return fft_error;
    
    arm_rfft_q15(&S,inputData, outputData);
    
    return fft_ok;
}
